export default {
  data () {
    return {
      userInfo: {}
    }
  },
  methods: {
    /**
     * 小程序授权机制
     *
     *  <button  open-type="getUserInfo" @getuserinfo="bindGetUserInfo" @click="getUserInfoClick">获取权限</button>
     *  1.  用户点击调用 getUserInfoClick 触发弹窗     **内容:申请获得以下权限**
     *  2.  用户点击后触发  bindGetUserInfo回调
     *          e.mp.detail.userInfo  授权成功 可以调用wx.login接口
     *          否则失败
     *
     *  3.  调用wx.login()接口
     *          **返回信息   {errMsg: "login:ok", code: "001bPa8A0FXbPe1P7x8A0Em28A0bPa8m"}**
     *  4.  调用code2Session
     *          参考https://developers.weixin.qq.com/miniprogram/dev/api/code2Session.html
     *
     */
    wxGetUserInfo (code) {
      const _this = this
      wx.getUserInfo({
        withCredentials: true,
        success (res) {
          console.log(res)
          _this.userInfo = res.userInfo
        },
        fail (err) {
          console.log('自动wx.getUserInfo失败:', err)
          // 显示主动授权的button
          _this.buttonVisible = true
        }
      })
    },

    /**
     * 查看用户是否授权
     */
    getUserInfoState () {
      wx.getSetting({
        success (res) {
          console.log('查看授权状态wx.getSetting', res)
          if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称
            wx.getUserInfo({
              success (res) {
                console.log(res.userInfo)
              }
            })
          }
        }
      })
    },

    /**
     * 查看用户登录状态
     */
    checkSession () {
      // 查看登录状态
      wx.checkSession({
        success () {
          // session_key 未过期，并且在本生命周期一直有效
        },
        fail () {
          // session_key 已经失效，需要重新执行登录流程
          wx.login() // 重新登录
        }
      })
    },

    /**
     * 授权弹窗的回调
     */
    bindGetUserInfo (e) {
      console.log('用户点击授权弹窗的回调', e.mp)
      if (e.mp.detail.userInfo) {
        this.buttonVisible = false
        console.log('用户按了允许授权按钮')
        this.login()
      } else {
        // 用户按了拒绝按钮
        console.log('用户按了拒绝按钮')
      }
    },

    /**
     * 登录获取code
     */
    login () {
      const self = this
      wx.login({
        success (res) {
          console.log('wx.login返回信息', res)
          if (res.code) {
            self.code = res.code
            self.wxGetUserInfo(res.code)
          }
        }
      })
    }
  }
}
